home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / QuickTime VR / MacOS / QuickDraw™ 3D 1.0.6F4 SDK / Development / Interfaces / QD3DIO.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-14  |  18.7 KB  |  664 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                              **
  3.  **     Module:        QD3DIO.h                                                 **                        
  4.  **                                                                              **
  5.  **                                                                              **
  6.  **     Purpose:    QuickDraw 3D IO API                                         **            
  7.  **                                                                              **
  8.  **                                                                              **
  9.  **                                                                              **
  10.  **     Copyright (C) 1992-1995 Apple Computer, Inc.  All rights reserved.     **
  11.  **                                                                              **
  12.  *****************************************************************************/
  13. #ifndef QD3DIO_h
  14. #define QD3DIO_h
  15.  
  16. #ifndef QD3D_h
  17. #include <QD3D.h>
  18. #endif  /*  QD3D_h  */
  19.  
  20. #if PRAGMA_ONCE
  21.     #pragma once
  22. #endif
  23.  
  24. #if defined(__MWERKS__)
  25.     #pragma enumsalwaysint on
  26.     #pragma align_array_members off
  27.     #pragma options align=native
  28. #endif
  29.  
  30. #include <QD3DDrawContext.h>
  31. #include <QD3DView.h>
  32.  
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif  /* __cplusplus */
  36.  
  37. /******************************************************************************
  38.  **                                                                              **
  39.  **                                    Basic Types                                 **                                                    
  40.  **                                                                              **
  41.  *****************************************************************************/
  42.  
  43. typedef unsigned char    TQ3Uns8;    /* 1 byte unsigned integer                 */ 
  44. typedef signed   char    TQ3Int8;    /* 1 byte signed integer                 */ 
  45. typedef unsigned short    TQ3Uns16;    /* 2 byte unsigned integer                 */ 
  46. typedef signed   short    TQ3Int16;    /* 2 byte signed integer                 */ 
  47. typedef unsigned long    TQ3Uns32;    /* 4 byte unsigned integer                 */
  48. typedef signed   long    TQ3Int32;    /* 4 byte signed integer                 */
  49.  
  50. typedef struct TQ3Uns64 {
  51.     unsigned long    hi;
  52.     unsigned long     lo; 
  53. } TQ3Uns64;                            /* 8 byte unsigned integer                 */
  54.  
  55. typedef struct TQ3Int64 { 
  56.     signed long        hi; 
  57.     unsigned long    lo; 
  58. } TQ3Int64;                            /* 8 byte signed integer                 */
  59.  
  60. typedef float            TQ3Float32;    /* 4 byte floating point number             */
  61. typedef double            TQ3Float64;    /* 8 byte floating point number             */
  62.  
  63. typedef TQ3Uns32        TQ3Size;
  64.  
  65. /******************************************************************************
  66.  **                                                                              **
  67.  **                                    File Types                                 **
  68.  **                                                                              **
  69.  *****************************************************************************/
  70.  
  71. typedef enum TQ3FileModeMasks {
  72.     kQ3FileModeNormal        = 0,
  73.     kQ3FileModeStream        = 1 << 0,
  74.     kQ3FileModeDatabase        = 1 << 1,
  75.     kQ3FileModeText            = 1 << 2
  76. } TQ3FileModeMasks;
  77.  
  78. typedef unsigned long TQ3FileMode;
  79.  
  80. /******************************************************************************
  81.  **                                                                              **
  82.  **                                    Method Types                             **
  83.  **                                                                              **
  84.  *****************************************************************************/
  85.  
  86. /*
  87.  *    IO Methods
  88.  *
  89.  *    The IO system treats all objects as groups of typed information.
  90.  *    When you register your element or attribute, the "elementType" is the 
  91.  *    binary type of your object, the "elementName" the ascii type.
  92.  *    
  93.  *    All objects in the metafile are made up of a "root" or parent object which
  94.  *    defines the instantiated object type. You may define the format of your 
  95.  *    data any way you wish as long as you use the primitives types above and the
  96.  *    routines below.
  97.  *
  98.  *    Root Objects are often appended with additional child objects, called 
  99.  *    subobjects. You may append your object with other QuickDraw 3D objects.
  100.  *    
  101.  *    Writing is straightforward: an object traverses itself any other objects 
  102.  *    that make it up, then writes its own data. Writing uses two methods: 
  103.  *    TQ3ObjectTraverseMethod and TQ3ObjectWriteMethod.
  104.  *
  105.  *    The TQ3ObjectTraverseMethod method should:
  106.  *    + First, Determine if the data should be written 
  107.  *        - if you don't want to write out your object after examining your
  108.  *            data, return kQ3Success in your Traverse method without calling
  109.  *            any other submit calls.
  110.  *     + Next, calculate the size of your object on disk
  111.  *     + Gather whatever state from the view you need to preserve
  112.  *         - you may access the view state NOW, as the state of the
  113.  *             view duing your TQ3ObjectWriteMethod will not be valid. You may
  114.  *             pass a temporary buffer to your write method.
  115.  *     + Submit your view write data using Q3View_SubmitWriteData
  116.  *         - note that you MUST call this before any other "_Submit" call.
  117.  *         - you may pass in a "deleteMethod" for your data. This method
  118.  *             will be called whether or not your write method succeeds or fails.
  119.  *     + Submit your subobjects to the view
  120.  *     
  121.  *     The TQ3ObjectWriteMethod method should:
  122.  *     + Write your data format to the file using the primitives routines below.
  123.  *         - If you passed a "deleteMethod" in your Q3View_SubmitWriteData, that
  124.  *             method will be called upon exit of your write method.
  125.  *
  126.  *    Reading is less straightforward because your root object and
  127.  *    any subobjects must be read inside of your TQ3ObjectReadDataMethod. There 
  128.  *    is an implicit state contained in the file while reading, which you must 
  129.  *    be aware of. When you first enter the read method, you must physically 
  130.  *    read in your data format using the primitives routines until
  131.  *    
  132.  *    Q3File_IsEndOfData(file) == kQ3True
  133.  *    
  134.  *    Generally, your data format should be self-descriptive such that you do not
  135.  *    need to call Q3File_IsEndOfData to determine if you are done reading. 
  136.  *    However, this call is useful for determining zero-sized object or 
  137.  *    determining the end of an object's data.
  138.  *    
  139.  *    Once you have read in all the data, you may collect subobjects. A metafile
  140.  *    object ONLY has subobjects if it is in a container. The call
  141.  *    
  142.  *    Q3File_IsEndOfContainer(file)
  143.  *    
  144.  *    returns kQ3False if subobjects exist, and kQ3True if subobjects do not 
  145.  *    exist.
  146.  *    
  147.  *    At this point, you may use
  148.  *    
  149.  *    Q3File_GetNextObjectType
  150.  *    Q3File_IsNextObjectOfType
  151.  *    Q3File_ReadObject
  152.  *    Q3File_SkipObject
  153.  *    
  154.  *    to iterate through the subobjects until Q3File_IsEndOfContainer(file) 
  155.  *    is kQ3True.
  156.  * 
  157.  */
  158.  
  159. /*
  160.  *    TQ3ObjectTraverseMethod
  161.  *
  162.  *    For "elements" (meaning "attributes, too), you will be passed NULL for 
  163.  *    object. Sorry, custom objects will be available in the next major revision.
  164.  *
  165.  *    The "data" is a pointer to your internal element data.
  166.  *
  167.  *    The view is the current traversal view.
  168.  */
  169.  
  170. typedef TQ3Status (*TQ3ObjectTraverseMethod)(
  171.     TQ3Object            object,
  172.     void                *data,
  173.     TQ3ViewObject        view);
  174.  
  175. typedef TQ3Status (*TQ3ObjectWriteMethod)(
  176.     const void            *object,
  177.     TQ3FileObject        file);
  178.  
  179. /*
  180.  *    TQ3ObjectReadDataMethod
  181.  *
  182.  *  For "elements" (meaning "attributes", too), you must allocate stack space 
  183.  *    and call Q3Set_Add on "parentObject", which is an TQ3SetObject.
  184.  *
  185.  *    Otherwise, parentObject is whatever object your element is a subobject of...
  186.  */
  187.  
  188. typedef TQ3Status (*TQ3ObjectReadDataMethod)(
  189.     TQ3Object            parentObject,
  190.     TQ3FileObject        file);
  191.  
  192. #define Q3FileVersion(majorVersion, minorVersion)    (TQ3FileVersion) \
  193.     ((((TQ3Uns32) majorVersion & 0xFFFF) << 16) | ((TQ3Uns32) minorVersion & 0xFFFF))
  194.  
  195. typedef unsigned long            TQ3FileVersion;
  196. #define kQ3FileVersionCurrent    Q3FileVersion(1,0)
  197.  
  198. /******************************************************************************
  199.  **                                                                              **
  200.  **                                String Constants                             **
  201.  **                                                                              **
  202.  *****************************************************************************/
  203.  
  204. #define kQ3StringMaximumLength            1024
  205.  
  206. /******************************************************************************
  207.  **                                                                              **
  208.  **                                File Routines                                 **
  209.  **                                                                              **
  210.  *****************************************************************************/
  211. /*
  212.  * Creation and accessors
  213.  */
  214. QD3D_EXPORT TQ3FileObject Q3File_New(
  215.     void);
  216.  
  217. QD3D_EXPORT TQ3Status Q3File_GetStorage(
  218.     TQ3FileObject        file,
  219.     TQ3StorageObject    *storage);
  220.  
  221. QD3D_EXPORT TQ3Status Q3File_SetStorage(
  222.     TQ3FileObject        file,
  223.     TQ3StorageObject    storage);
  224.  
  225. /*
  226.  * Opening, and accessing "open" state, closing/cancelling
  227.  */
  228. QD3D_EXPORT TQ3Status Q3File_OpenRead(
  229.     TQ3FileObject        file,
  230.     TQ3FileMode            *mode);
  231.  
  232. QD3D_EXPORT TQ3Status Q3File_OpenWrite(
  233.     TQ3FileObject        file,
  234.     TQ3FileMode            mode);
  235.  
  236. QD3D_EXPORT TQ3Status Q3File_IsOpen(
  237.     TQ3FileObject        file,
  238.     TQ3Boolean            *isOpen);
  239.  
  240. QD3D_EXPORT TQ3Status Q3File_GetMode(
  241.     TQ3FileObject        file,
  242.     TQ3FileMode            *mode);
  243.  
  244. QD3D_EXPORT TQ3Status Q3File_GetVersion(
  245.     TQ3FileObject        file,
  246.     TQ3FileVersion        *version);
  247.  
  248. QD3D_EXPORT TQ3Status Q3File_Close(
  249.     TQ3FileObject        file);
  250.  
  251. QD3D_EXPORT TQ3Status Q3File_Cancel(
  252.     TQ3FileObject        file);
  253.  
  254. /*
  255.  * Writing (Application)
  256.  */
  257. QD3D_EXPORT TQ3Status Q3View_StartWriting(
  258.     TQ3ViewObject         view,
  259.     TQ3FileObject        file);
  260.  
  261. QD3D_EXPORT TQ3ViewStatus Q3View_EndWriting(
  262.     TQ3ViewObject         view);
  263.  
  264. /*
  265.  * Reading (Application)
  266.  */
  267. QD3D_EXPORT TQ3ObjectType Q3File_GetNextObjectType(
  268.     TQ3FileObject        file);
  269.  
  270. QD3D_EXPORT TQ3Boolean Q3File_IsNextObjectOfType(
  271.     TQ3FileObject        file,
  272.     TQ3ObjectType        ofType);
  273.  
  274. QD3D_EXPORT TQ3Object Q3File_ReadObject(
  275.     TQ3FileObject        file);
  276.  
  277. QD3D_EXPORT TQ3Status Q3File_SkipObject(
  278.     TQ3FileObject        file);
  279.  
  280. QD3D_EXPORT TQ3Boolean Q3File_IsEndOfData(
  281.     TQ3FileObject        file);
  282.  
  283. QD3D_EXPORT TQ3Boolean Q3File_IsEndOfContainer(
  284.     TQ3FileObject        file,
  285.     TQ3Object            rootObject);
  286.  
  287. QD3D_EXPORT TQ3Boolean Q3File_IsEndOfFile(
  288.     TQ3FileObject        file);
  289.  
  290. /*
  291.  * Idling
  292.  */
  293. typedef TQ3Status (*TQ3FileIdleMethod)(
  294.     TQ3FileObject        file,
  295.     const void            *idlerData);
  296.  
  297. QD3D_EXPORT TQ3Status Q3File_SetIdleMethod(
  298.     TQ3FileObject        file,
  299.     TQ3FileIdleMethod    idle,
  300.     const void            *idleData);
  301.  
  302. typedef void (*TQ3DataDeleteMethod)(
  303.     void                *data);
  304. /*
  305.  * Custom object writing 
  306.  */
  307. QD3D_EXPORT TQ3Status Q3View_SubmitWriteData(
  308.     TQ3ViewObject        view,
  309.     TQ3Size                size,    
  310.     void                *data,
  311.     TQ3DataDeleteMethod    deleteData);
  312.  
  313. /******************************************************************************
  314.  **                                                                              **
  315.  **                                Primitives Routines                             **
  316.  **                                                                              **
  317.  *****************************************************************************/
  318.  
  319. QD3D_EXPORT TQ3Status Q3Uns8_Read(
  320.     TQ3Uns8                *data,
  321.     TQ3FileObject        file);
  322.  
  323. QD3D_EXPORT TQ3Status Q3Uns8_Write(
  324.     const TQ3Uns8        data,
  325.     TQ3FileObject        file);
  326.  
  327. QD3D_EXPORT TQ3Status Q3Uns16_Read(
  328.     TQ3Uns16                *data,
  329.     TQ3FileObject        file);
  330.  
  331. QD3D_EXPORT TQ3Status Q3Uns16_Write(
  332.     const TQ3Uns16        data,
  333.     TQ3FileObject        file);
  334.  
  335. QD3D_EXPORT TQ3Status Q3Uns32_Read(
  336.     TQ3Uns32                *data,
  337.     TQ3FileObject        file);
  338.         
  339. QD3D_EXPORT TQ3Status Q3Uns32_Write(
  340.     const TQ3Uns32        data,
  341.     TQ3FileObject        file);
  342.  
  343. QD3D_EXPORT TQ3Status Q3Int32_Read(
  344.     TQ3Int32            *data,
  345.     TQ3FileObject        file);
  346.             
  347. QD3D_EXPORT TQ3Status Q3Int32_Write(
  348.     const TQ3Int32        data,
  349.     TQ3FileObject        file);
  350.             
  351. QD3D_EXPORT TQ3Status Q3Uns64_Read(
  352.     TQ3Uns64            *data,
  353.     TQ3FileObject        file);
  354.         
  355. QD3D_EXPORT TQ3Status Q3Uns64_Write(
  356.     const TQ3Uns64        data,
  357.     TQ3FileObject        file);
  358.  
  359. QD3D_EXPORT TQ3Status Q3Float32_Read(
  360.     TQ3Float32            *data,
  361.     TQ3FileObject        file);
  362.  
  363. QD3D_EXPORT TQ3Status Q3Float32_Write(
  364.     const TQ3Float32    data,
  365.     TQ3FileObject        file);
  366.  
  367. QD3D_EXPORT TQ3Status Q3Float64_Read(
  368.     TQ3Float64            *data,
  369.     TQ3FileObject        file);
  370.  
  371. QD3D_EXPORT TQ3Status Q3Float64_Write(
  372.     const TQ3Float64    data,
  373.     TQ3FileObject        file);
  374.  
  375. QD3D_EXPORT TQ3Size Q3Size_Pad(
  376.     TQ3Size                size);
  377.  
  378. /*
  379.  * Pass a pointer to a buffer of kQ3StringMaximumLength bytes
  380.  */
  381. QD3D_EXPORT TQ3Status Q3String_Read(
  382.     char                *data,
  383.     unsigned long        *length,
  384.     TQ3FileObject        file);
  385.  
  386. QD3D_EXPORT TQ3Status Q3String_Write(
  387.     const char            *data,
  388.     TQ3FileObject        file);
  389.  
  390. /* 
  391.  * This call will read Q3Size_Pad(size) bytes,
  392.  *    but only place size bytes into data.
  393.  */
  394. QD3D_EXPORT TQ3Status Q3RawData_Read(
  395.     unsigned char        *data,
  396.     unsigned long        size,
  397.     TQ3FileObject        file);
  398.  
  399. /* 
  400.  * This call will write Q3Size_Pad(size) bytes,
  401.  *    adding 0's to pad to the nearest 4 byte boundary.
  402.  */
  403. QD3D_EXPORT TQ3Status Q3RawData_Write(
  404.     const unsigned char    *data,
  405.     unsigned long        size,
  406.     TQ3FileObject        file);
  407.  
  408. /******************************************************************************
  409.  **                                                                              **
  410.  **                        Convenient Primitives Routines                         **
  411.  **                                                                              **
  412.  *****************************************************************************/
  413.  
  414. QD3D_EXPORT TQ3Status Q3Point2D_Read(
  415.     TQ3Point2D                    *point2D,
  416.     TQ3FileObject                file);
  417.  
  418. QD3D_EXPORT TQ3Status Q3Point2D_Write(
  419.     const TQ3Point2D            *point2D,
  420.     TQ3FileObject                file);
  421.  
  422. QD3D_EXPORT TQ3Status Q3Point3D_Read(
  423.     TQ3Point3D                    *point3D,
  424.     TQ3FileObject                file);
  425.  
  426. QD3D_EXPORT TQ3Status Q3Point3D_Write(
  427.     const TQ3Point3D            *point3D,
  428.     TQ3FileObject                file);
  429.     
  430. QD3D_EXPORT TQ3Status Q3RationalPoint3D_Read(
  431.     TQ3RationalPoint3D            *point3D,
  432.     TQ3FileObject                file);
  433.  
  434. QD3D_EXPORT TQ3Status Q3RationalPoint3D_Write(
  435.     const TQ3RationalPoint3D    *point3D,
  436.     TQ3FileObject                file);
  437.  
  438. QD3D_EXPORT TQ3Status Q3RationalPoint4D_Read(
  439.     TQ3RationalPoint4D            *point4D,
  440.     TQ3FileObject                file);
  441.  
  442. QD3D_EXPORT TQ3Status Q3RationalPoint4D_Write(
  443.     const TQ3RationalPoint4D    *point4D,
  444.     TQ3FileObject                file);
  445.  
  446. QD3D_EXPORT TQ3Status Q3Vector2D_Read(
  447.     TQ3Vector2D                    *vector2D,
  448.     TQ3FileObject                file);
  449.  
  450. QD3D_EXPORT TQ3Status Q3Vector2D_Write(
  451.     const TQ3Vector2D            *vector2D,
  452.     TQ3FileObject                file);
  453.  
  454. QD3D_EXPORT TQ3Status Q3Vector3D_Read(
  455.     TQ3Vector3D                    *vector3D,
  456.     TQ3FileObject                file);
  457.  
  458. QD3D_EXPORT TQ3Status Q3Vector3D_Write(
  459.     const TQ3Vector3D            *vector3D,
  460.     TQ3FileObject                file);
  461.  
  462. QD3D_EXPORT TQ3Status Q3Matrix4x4_Read(
  463.     TQ3Matrix4x4                *matrix4x4,
  464.     TQ3FileObject                file);
  465.  
  466. QD3D_EXPORT TQ3Status Q3Matrix4x4_Write(
  467.     const TQ3Matrix4x4            *matrix4x4,
  468.     TQ3FileObject                file);
  469.  
  470. QD3D_EXPORT TQ3Status Q3Tangent2D_Read(
  471.     TQ3Tangent2D                *tangent2D,
  472.     TQ3FileObject                file);
  473.  
  474. QD3D_EXPORT TQ3Status Q3Tangent2D_Write(
  475.     const TQ3Tangent2D            *tangent2D,
  476.     TQ3FileObject                file);
  477.  
  478. QD3D_EXPORT TQ3Status Q3Tangent3D_Read(
  479.     TQ3Tangent3D                *tangent3D,
  480.     TQ3FileObject                file);
  481.  
  482. QD3D_EXPORT TQ3Status Q3Tangent3D_Write(
  483.     const TQ3Tangent3D            *tangent3D,
  484.     TQ3FileObject                file);
  485.  
  486. /*    This call affects only text Files - it is a no-op in binary files */
  487.  
  488. QD3D_EXPORT TQ3Status Q3Comment_Write(
  489.     char                        *comment,
  490.     TQ3FileObject                file);
  491.  
  492. /******************************************************************************
  493.  **                                                                              **
  494.  **                                Unknown Object                                 **
  495.  **                                                                              **
  496.  **        Unknown objects are generated when reading files which contain         **
  497.  **        custom data which has not been registered in the current             **
  498.  **        instantiation of QuickDraw 3D.                                         **
  499.  **                                                                              **
  500.  *****************************************************************************/
  501.  
  502. QD3D_EXPORT TQ3ObjectType Q3Unknown_GetType(
  503.     TQ3UnknownObject        unknownObject);
  504.  
  505. QD3D_EXPORT TQ3Status Q3Unknown_GetDirtyState(
  506.     TQ3UnknownObject        unknownObject,
  507.     TQ3Boolean                *isDirty);
  508.  
  509. QD3D_EXPORT TQ3Status Q3Unknown_SetDirtyState(
  510.     TQ3UnknownObject        unknownObject,
  511.     TQ3Boolean                isDirty);
  512.  
  513.  
  514. /******************************************************************************
  515.  **                                                                              **
  516.  **                            Unknown Text Routines                             **
  517.  **                                                                              **
  518.  *****************************************************************************/
  519.  
  520. typedef struct TQ3UnknownTextData {
  521.     char                    *objectName;    /* '\0' terminated */
  522.     char                    *contents;        /* '\0' terminated */
  523. } TQ3UnknownTextData;
  524.  
  525. QD3D_EXPORT TQ3Status Q3UnknownText_GetData(
  526.     TQ3UnknownObject        unknownObject,
  527.     TQ3UnknownTextData        *unknownTextData);
  528.  
  529. QD3D_EXPORT TQ3Status Q3UnknownText_EmptyData(
  530.     TQ3UnknownTextData        *unknownTextData);
  531.  
  532.  
  533. /******************************************************************************
  534.  **                                                                              **
  535.  **                            Unknown Binary Routines                             **
  536.  **                                                                              **
  537.  *****************************************************************************/
  538.  
  539. typedef struct TQ3UnknownBinaryData {
  540.     TQ3ObjectType            objectType;
  541.     unsigned long            size;
  542.     TQ3Endian                byteOrder;
  543.     char                    *contents;
  544. } TQ3UnknownBinaryData;
  545.  
  546. QD3D_EXPORT TQ3Status Q3UnknownBinary_GetData(
  547.     TQ3UnknownObject        unknownObject,
  548.     TQ3UnknownBinaryData    *unknownBinaryData);
  549.  
  550. QD3D_EXPORT TQ3Status Q3UnknownBinary_EmptyData(
  551.     TQ3UnknownBinaryData    *unknownBinaryData);
  552.  
  553.  
  554. /******************************************************************************
  555.  **                                                                              **
  556.  **                            ViewHints routines                                 **
  557.  **                                                                              **
  558.  **        ViewHints are an object in a metafile to give you some hints on how     **
  559.  **        to render a scene.    You may create a view with any of the objects     **
  560.  **        retrieved from it, or you can just throw it away.                     **
  561.  **                                                                              **
  562.  **        To write a view hints to a file, create a view hints object from a     **
  563.  **        view and write the view hints.                                         **
  564.  **                                                                              **
  565.  *****************************************************************************/
  566.  
  567. QD3D_EXPORT TQ3ViewHintsObject Q3ViewHints_New(
  568.     TQ3ViewObject            view);
  569.  
  570. QD3D_EXPORT TQ3Status Q3ViewHints_SetRenderer(
  571.     TQ3ViewHintsObject        viewHints,
  572.     TQ3RendererObject        renderer);
  573.  
  574. QD3D_EXPORT TQ3Status Q3ViewHints_GetRenderer(
  575.     TQ3ViewHintsObject        viewHints,
  576.     TQ3RendererObject        *renderer);
  577.  
  578. QD3D_EXPORT TQ3Status Q3ViewHints_SetCamera(
  579.     TQ3ViewHintsObject        viewHints,
  580.     TQ3CameraObject            camera);
  581.  
  582. QD3D_EXPORT TQ3Status Q3ViewHints_GetCamera(
  583.     TQ3ViewHintsObject        viewHints,
  584.     TQ3CameraObject            *camera);
  585.  
  586. QD3D_EXPORT TQ3Status Q3ViewHints_SetLightGroup(
  587.     TQ3ViewHintsObject        viewHints,
  588.     TQ3GroupObject            lightGroup);
  589.  
  590. QD3D_EXPORT TQ3Status Q3ViewHints_GetLightGroup(
  591.     TQ3ViewHintsObject        viewHints,
  592.     TQ3GroupObject            *lightGroup);
  593.  
  594. QD3D_EXPORT TQ3Status Q3ViewHints_SetAttributeSet(
  595.     TQ3ViewHintsObject        viewHints,
  596.     TQ3AttributeSet            attributeSet);
  597.  
  598. QD3D_EXPORT TQ3Status Q3ViewHints_GetAttributeSet(
  599.     TQ3ViewHintsObject        viewHints,
  600.     TQ3AttributeSet            *attributeSet);
  601.  
  602. QD3D_EXPORT TQ3Status Q3ViewHints_SetDimensionsState(
  603.     TQ3ViewHintsObject        viewHints,
  604.     TQ3Boolean                isValid);
  605.     
  606. QD3D_EXPORT TQ3Status Q3ViewHints_GetDimensionsState(
  607.     TQ3ViewHintsObject        viewHints,
  608.     TQ3Boolean                *isValid);
  609.  
  610. QD3D_EXPORT TQ3Status Q3ViewHints_SetDimensions(
  611.     TQ3ViewHintsObject        viewHints,
  612.     unsigned long            width,
  613.     unsigned long            height);
  614.  
  615. QD3D_EXPORT TQ3Status Q3ViewHints_GetDimensions(
  616.     TQ3ViewHintsObject        viewHints,
  617.     unsigned long            *width,
  618.     unsigned long            *height);
  619.  
  620. QD3D_EXPORT TQ3Status Q3ViewHints_SetMaskState(
  621.     TQ3ViewHintsObject        viewHints,
  622.     TQ3Boolean                isValid);
  623.  
  624. QD3D_EXPORT TQ3Status Q3ViewHints_GetMaskState(
  625.     TQ3ViewHintsObject        viewHints,
  626.     TQ3Boolean                *isValid);
  627.  
  628. QD3D_EXPORT TQ3Status Q3ViewHints_SetMask(    
  629.     TQ3ViewHintsObject        viewHints,
  630.     const TQ3Bitmap            *mask);
  631.  
  632. QD3D_EXPORT TQ3Status Q3ViewHints_GetMask(    
  633.     TQ3ViewHintsObject        viewHints,
  634.     TQ3Bitmap                *mask);
  635.  
  636. /* Call Q3Bitmap_Empty when done with the mask    */
  637.  
  638. QD3D_EXPORT TQ3Status Q3ViewHints_SetClearImageMethod(
  639.     TQ3ViewHintsObject                viewHints,
  640.     TQ3DrawContextClearImageMethod    clearMethod);
  641.  
  642. QD3D_EXPORT TQ3Status Q3ViewHints_GetClearImageMethod(
  643.     TQ3ViewHintsObject                viewHints,
  644.     TQ3DrawContextClearImageMethod    *clearMethod);
  645.  
  646. QD3D_EXPORT TQ3Status Q3ViewHints_SetClearImageColor(
  647.     TQ3ViewHintsObject        viewHints,
  648.     const TQ3ColorARGB         *color);
  649.  
  650. QD3D_EXPORT TQ3Status Q3ViewHints_GetClearImageColor(
  651.     TQ3ViewHintsObject        viewHints,
  652.     TQ3ColorARGB             *color);
  653.  
  654. #ifdef __cplusplus
  655. }
  656. #endif    /* __cplusplus */
  657.  
  658. #if defined(__MWERKS__)
  659. #pragma options align=reset
  660. #pragma enumsalwaysint reset
  661. #endif
  662.  
  663. #endif /* QD3DIO_h */
  664.